home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
126-150
/
scopedisk143
/
vlt4.824
/
docs
/
vlt4p824.doc
< prev
Wrap
Text File
|
1995-03-19
|
67KB
|
1,547 lines
+----------------------------------------------------------------------+
| |
| D I S C L A I M E R N O T I C E |
| |
| This document and/or portions of the material and data furnished |
| herewith, was developed under sponsorship of the U.S. Government. |
| Neither the U.S. nor the U.S.D.O.E., nor the Leland Stanford |
| Junior University, nor their employees, nor their respective con- |
| tractors, subcontractors, or their employees, makes any warranty, |
| express or implied, or assumes any liability or responsibility for |
| accuracy, completeness or usefulness of any information, appara- |
| tus, product or process disclosed, or represents that its use will |
| not infringe privately-owned rights. Mention of any product, its |
| manufacturer, or suppliers shall not, nor is it intended to, imply |
| approval, disapproval, or fitness for any particular use. The U.S. |
| and the University at all times retain the right to use and dis- |
| seminate same for any purpose whatsoever. |
| |
+----------------------------------------------------------------------+
Tektronix is a trademark of Tektronix, Inc.
VT100 is a trademark of Digital Equipment Corporation.
VLT 4.824 Additional Documentation
==================================
(C) Copyright 1989, 1990
by
W.G.J. Langeveld
Stanford Linear Accelerator Center
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
General
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
The most important changes in VLT involve the scripting facility and
ARexx support. The scripting facility has been completely rewritten. Not one
line of the original code remains. The new features include:
1) All commands are now available from ARexx,
2) One can extract all available information from ARexx (extract).
7) Any number of simultaneous scripts, ARexx's, function keys allowed.
3) All commands that used to be "init-only" can now be used at any time.
4) All commands that were not available during "init" now are.
5) The command set has been orthogonalized. No more "funny" names.
6) The "wait" command now has an optional timeout with report to ARexx.
8) One can now "trap" or "on" on any number of strings from the host.
9) One can now put multiple script commands on the same line.
10) Consequently, multiple script commands per function key definition.
11) And also, multiple script commands from any one ARexx call.
12) Errors now show an actual error message and the script line number.
13) Error messages are reported as error codes (RC) to ARexx.
14) And, the corresponding error message can be retrieved (fault).
15) All ARexx reports are handled using REXX variables interface (RVI).
16) Time values can now be specified as hh:mm:ss.ff
17) Scripts can have a name and may be cancelled by name.
18) A tracing facility is now added.
19) A wedge command allows intercepting and changing keystrokes
20) ...And more... 8^)
The bad news is, that quite a few commands have been renamed or
moved to subcommands of other commands. Therefore, people with existing
scripts may have to do some rewriting. Further, there are no script
commands for the Tektronix part yet, this will be remedied in the next
release.
The rest of this document is devided in several parts. First there is
a section on the new features in VLT. Then there is an introduction to the
new scripting facility with some examples. Then there is a short section
listing some conventions for the following section, which contains a list
of all commands with short descriptions for each one. For some commands, a
longer description is given Appendices A throgh D.
A new manual is being worked on. 52 pages of fine print in TeX
have been completed thusfar, but it will take a little more time before
the manual is completed. Watch for an announcement on BIX. I will likely
post a DVI file for those that have TeX, and I will try to make the manual
a standard SLAC Technical Report so that people can request it directly
from the SLAC publications department.
Willy Langeveld, 31 july 1990.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
What's New In VLT?
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
1. VT100 Section
----------------
This section lists the changes in the VT100 section of VLT in pretty
much chronological order since version 4.428. No doubt the biggest changes are
in the script facility and ARexx support. This is described in a separate
section and will only briefly be mentioned here. A large number of small details
have been fixed, cleaned up, or just changed. We will only list the ones you're
likely to run into...
VLT now no longer has *any* restrictions on usage of commands in
vlt.init or "+i" scripts (i.e. scripts started using the +i command line
option). This allows one to write a script where VLT's main screen or window
never opens at all. All commands can be used. Of course commands that involve
the display aren't effective, and the text isn't stored in the review buffer,
although you can of course capture the session. You can also close VLT's
screens and windows using a script command. See scripts (clear command).
The built-in Kermit and XMODEM are no more. If you want to use Kermit or
XMODEM, you will also need Steve Walton's xprkermit and Marc Boucher's
xprxmodem. These two are in the Amiga listings areas on BIX. However, the menu
items are still the same (pretty much) and "kermit" and "xmodem" are still valid
options in scripts. The script command set has been changed, as is detailed in a
separate section. XPR protocols now will use ARP style wildcards if the
protocol supports wild cards.
The way VLT handles "non-wrapping" mode, i.e. the mode where characters
are not wrapped to the next line when the line exceeds the maximum number of
columns has been changed to conform to VT100 standard. This may show up in a
funny way: if you type beyond the last column and then backspace using
destructive backspace, you may wind up with a dangling character at the end of
the line that cannot be erased. This is a feature, not a bug. A problem with
"tabs" beyond the last column was also fixed.
A number of special private escape sequences are now absorbed (but not
acted upon) that weren't before. Also, there was a possibility to crash VLT
given certain very specific "runnaway" escape sequences. The VT100 Device
Control String (DCS) is now also properly absorbed (but not acted upon). The
escape sequences to enable or disable key-repeat are now supported, and there is
a new menu option to control key-repeat. A number of other VT100 emulation
problems were fixed.
The Hangup command (script and menu) now only closes and opens the
serial device once (it used to do so twice). This makes it more convenient to
use with Syndesis' TSSNet.
VLT now uses a backdrop window for its main window when on a custom
screen. This means that status windows and requesters can no longer disappear
behind it, and allows DMouse style programs to "push VLT behind everything else"
even if there are requesters or other windows still open.
There are two new command line options: -b starts VLT in "background"
mode, i.e. it doesn't open screens or windows. +c <vlt-script-command(s)> allows
one to start VLT off with one or more script commands straight from the command
line.
The escape sequence to allow VLT commands to be executed directly from
the host now allows specification of the size of the command. Collection of this
command from the host is now terminated when the buffer is full and/or when the
"clear screen" menu option is invoked.
One can now save selected lines in the review buffer to the Amiga
clipboard. Also, whenever selected lines are saved to a file or to the
clipboard, the selected lines are now unselected. All known problems and quirks
of the review buffer should now be fixed. This includes the cases where drag
selecting lines would sometimes all of a sudden select everything; and sometimes
Edit/Send would get things in the wrong order.
There is now a "raw" capture mode: all characters are saved, including
returns and linefeeds, as they were sent by the host. Non-raw capture does some
basic translations assuming the capture file is a text file. See scripts.
Some menu items were renamed and moved. The "downcase" menu item was
moved to the Kermit options menu, since it only affects Kermit transfers. The
change directory menu item is now in the VLT menu, since it affects everything
in VLT. The Program mode option is also in the VLT menu since there are number
of different things that can be programmed. A Refresh Screen option was added
and also a Remove All Traps option. The Change Directory menu item was moved
from the Transfer menu to the VLT menu: it changes the programs default
directory globally, not just the default for downloads. Some menu options are
now properly disabled when running on the Workbench. A couple of menu items
acquired some abbreviations. Note that "Exit" now has one, right-Amiga-shift-> .
Too hard to type in accidentally, but made available by popular request. Open
Console also has one now: right-Amiga single quote. Right-Amiga V, the shortcut
for the Open Review Buffer Window menu item, will reactivate the review window
if it was already open.
There is now a user menu with 10 programmable options: not only the
function but also the text may be programmed. The way to do this is to add a
comment at the end of the sequence to which the item is programmed. For example,
if the item was programmed to be:
~@dialbix.scp
one might change it to:
~@dialbix.scp # Dial BIX
The words Dial BIX will now appear in the menu. Note: if the sequence
was just a bunch of text to be sent to the host, such as:
myusername*R
then you can't just add the comment: VLT would send the comment too when
this item was selected during normal operation. However, you could get the
same effect by reprogramming it to:
~send "myusername*R" # Send myusername
Conversely, if there is a command which has a pound sign in it such as:
~emit "foo#bar"
then you may wind up with the text bar" in the menu. This doesn't affect
the operation, but is a little ugly and can be fixed by adding a real
comment to the line:
~emit "foo#bar" # Some item text
You get the picture...
The MESSAGE command now parses its argument for ARP sequences, so you
can use the *N directive to go to a new line. There is a compatibility issue: if
you used *'s before you are in trouble. Escape the * by a *, i.e. **. See
scripts.
It is now possible to start VLT from the Workbench and have it run a
script. See the testscript.scp script and icon. Double click on testscript.scp's
icon, and it should tell you a story. One can get VLT up running a sequence of
scripts by shift-selecting them in the proper order and double-clicking on VLT's
icon. VLT will change its default directory to the location where the icon was
found before running each script.
There's a problem with clipboard support. It seems some programs don't
run properly if a clip with an odd number of data bytes is padded in compliance
with the IFF spec. I changed VLT to cooperate with these programs. However,
there is a new script command, called MISCFLAGS, which allows you to change
various things. The only thing supported now is bit 0: it means pad clips
according IFF spec if you set it, i.e. MISCFLAGS 1 is the command you want. Once
set, you can save the configuration and this setting will remain in effect.
As mentioned, the default setting of MISCFLAGS is 0. See also scripts.
A few one-liners:
-----------------
- A problem with VLT taking up a lot of cycles when the console window was
open was fixed.
- In previous versions the text was only centered horizontally, according
to font size and window width. Now it is also centered vertically.
- A number of changes were made to allow Graphics and VT100 text on the
same screen. See the Tektronix section for details.
- A number of stylistic changes were made that are only apparent when
running VLT under AmigaDOS 2.0. See also scripts.
- It is no longer possible to run into trouble with key-repeats when using
keyboard short-cuts for menu items.
- The handling of the situation where a noise burst sends an Xoff to VLT
is greatly improved.
- Mouse support now also reports left/right shift/alt/amiga/ctrl/
caps-lock status.
- One can now program the primary and secondary Device Status Reports, see
"scripts".
- There is a script option called "wedge". It allows one to intercept
and modify keystrokes. See scripts.
- An attempt is now made to abort ARexx scripts that still have
outstanding commands scheduled within VLT.
- ALT-keypresses now use the full deadkeyconvert logic, i.e. it
is now possible to generate accented characters using the Amiga standard
way of using the alt key.
- "Snap"-like programs should now be able to work with VLT: VLT now
SetFonts the Window rastport in addition to its own copy.
- The way colors are determined for various operations under 2.0 (like
shadow and shine for gadgets) is now programmable. See scripts.
2. Tektronix Section
--------------------
The Tektronix section has had only one major upgrade this time
around, and a number of smaller changes. The big change is that one can now
display graphics in the main VLT window, together with the VT100 text. One
can even set things up so that the graphics and the text don't interfere, by
setting proper color mappings and masks. To this end, a new color options
requester was added, which allows one to set mappings for all colors and an
"erase mask". When set to run on the main VLT window, and when all colors
are set to map to 4, and also the erase mask is set to 4, and the options
Mask Colors and Lock Colors are selected, the Tektronix part of VLT will
essentially only use the third bitplane of the main VLT screen, and when
the user uses either Quick or Normal rendering for the VT100 display, the
graphics will overlay the text without interference and can be separately
controlled.
In previous versions one could only control horizontal and
vertical scaling. One can now also control the X and Y offset of the
graphics display.
There is a new menu option that allows one to specify whether the
<esc> %! 1 sequence flips the screen back to VT100 or not. Also: some menu
options are now properly disabled when running on the Workbench.
Also a number of bugs were fixed, the most bothersome of which
may have been that Move and Draw didn't always update VLT's idea of where
x and y were, causing sometimes text to be displayed all at the top.
Another problem was that certain inquiries weren't recognized.
A number of escape sequences that should only be recognized in alpha mode
are now also recognized in vector mode to overcome some buggy mainframe
software.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Introduction To New Scripting Facility
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
1. Schedules
------------
VLT's scripting facility is based on the notion of a "schedule".
A schedule is a set of commands within their own context, with all information
needed for the successful progress and completion of its operations. A schedule
can be a regular VLT native script as in previous versions: in that case the
context includes such things as a pointer to the script file, a list of labels
that the script may contain, a number of string segments it is waiting for
from the host, etc. Another example of a schedule is what is started when
a programmable function key is pressed, if said key is programmed to execute
one or more commands. And the final example of a schedule is when a line
is received through VLT's ARexx port: such a line may contain one or more
script commands. The context of an ARexx launched schedule would of course
include the ARexx message that started it.
Schedules may have a name: VLT will assume that a schedule is named
after its first label. So it may be a good idea to start all schedules
(at least ones that have a chance to execute for a while) with a label
that conveys some information about its purpose, even if there is never
a "goto" to that label. A simple example would be:
#
# This is the file blinker.scp
#
blinker:
cursorheight 0
delay 0.3
cursorheight 1
delay 0.3
goto blinker
As another example, run VLT (if you have ConMan 1.3) and open the console
window. We can then start the same schedule by typing:
~blinker: cursorh 0; delay 0.3; cursorh 1; delay 0.3; goto blinker
The tilda (~) in front of the command is familiar from previous versions.
It means: what follows is either a schedule or an @ sign followed by the
name of a .scp or .vlt file. In this case, it is an in-line schedule, which
is scheduled for execution. It has completely the same effect as selecting
"VLT Script" from the menu and entering "blinker.scp" in the filename
gadget (assuming the file blinker.scp above exists in your rexx: directory).
The tilda, by the way, is not part of the scripting language itself. Just
to complete the set of examples: the same schedule might have been started
from outside VLT, say from WShell, by typing:
1> "Address VLT 'blinker: curso .... oto blinker'
There is one side effect: the blinker will of course never complete, because
it runs in an infinite loop. Therefore, the "address VLT" will never return
to WShell. This is why there is a "schedule" command: had we typed instead:
1> "Address VLT schedule 'blinker: curso .... oto blinker'
1>
we would be returned immediately to the WShell command line, while the
blinker would blink merrily away.
2. Cancelling Schedules
-----------------------
Schedules can "expire" for a number of different reasons. For one
thing, they may be cancelled by the user: when you select "Abort VLT Scripts"
from the menu, all currently pending schedules are cancelled. From ARexx,
you can use the Extract command to find among other things the currently
pending named schedules, and use the "cancel" command to cancel a particular
one or all of them. For example, from ARexx one might have typed:
1> "Address VLT cancel blinker
to stop the blinker. By the way, if we followed the steps above, we would
now be running *three* separate independent copies of the blinker, one
from the script file, one we typed in from the console window and one or
two we started from WShell using "address VLT". The "cancel blinker"
command only aborted one of those three or four, the first one it found in
the list of schedules. If we wanted to make sure that we only ever wanted
to run *one* copy of the blinker, we could protect ouselves using a property
of Cancel: the Cancel command only aborts *other* schedules, not the
schedule that the cancel command is issued from. We could therefore modify,
say, blinker.scp to read:
#
# This is the file blinker.scp
#
cancel blinker
blinker:
cursorheight 0
delay 0.3
cursorheight 1
delay 0.2
goto blinker
and assuming this was the only way that blinker ever got started, any
subsequent invocation would cancel the previous one.
3. Timeouts, the Fault command, and timed Waits
-----------------------------------------------
Schedules can also expire when there are no more commands to
be executed, or when an "exit" command is encountered. And finally,
schedules expire whenever a fatal error is encountered. At this time,
all errors are considered fatal, with one exception. The ARexx error
code RC = 1 is reserved for the case where a timeout has occurred.
To see this, type the following from WShell:
1> "Address VLT; delay 1; say RC
1
1>
or, to demonstrate the Fault command:
1> "Address VLT; delay 1; fault RC; say VLT.Error
Timeout
1>
Notice the colon after "address VLT" to indicate that all future commands
are to go to VLT. While we're at it, we may as well explain what happened:
first the command "delay 1" was sent to VLT. VLT ran a schedule with only
that command in it. It timed out, and the ARexx standard error code RC was
set to 1. Then the command "fault 1" was sent to VLT (since RC was 1), and
VLT used the REXX variables interface to set the special VLT variable called
VLT.Error to the message belonging to error 1, "Timeout". Of course, the
Fault command does not depend on "RC": we might just have typed:
1> "Address VLT; do i = 0 to 20; fault i; say VLT.Error; end;
Normal successfull completion
Timeout
..............
........
......
1>
to see the full list of error messages VLT can return.
The reason that timeout is a special case, is seen in the following
example. Suppose we want to wait for the host to send the string "Ready".
Easy: just type
1> "Address VLT wait 'Ready'
But suppose also that maybe the host might be broken and the word "Ready"
might never appear. In that case we're up the creek, because WShell would
just sit there, and nothing short of cancelling everything from the menu
or from another script or ARexx command would cure it. Now suppose we
expect that the command comes within the next three and a half seconds,
and if it doesn't the host is surely kaputt. We can then use the timeout
feature of Wait to do the following (an example ARexx program):
/* simple.rexx program */
Address VLT
wait "Ready" 3.5
if RC = 1 then do
say "Host must have croaked"
exit 20
end
say "Okay, I guess we're ready"
exit 0
4. Waits, Ons and Traps
-----------------------
In native scripts, there is no such thing as the RC variable: it
is only defined within ARexx. To write the previous program in the native
script language, we could do:
#
# Simple.scp script
#
simple: # just a name
wait (Ready) 3.5
emit [Don't know if we timed out or whether we received "Ready"]
exit
but this is clearly not the way to go. Notice, that in the new script parser
you no longer have to use single or double quotes to delimit strings: any
form of brackets (<[{}]>) is also allowed. This allows us to easily nest
quotes, and should especially help from ARexx.
To regain the functionality, we must use the On command:
#
# Simple.scp script
#
simple:
on {Ready} goto gotit
delay 3.5
emit <I guess we timed out: Host croaked.>
exit
gotit:
emit 'Host is ready'
exit
Now suppose the host might either respond "Ready" or "I croaked". In that case
it would be silly to have to delay 3.5 seconds. Instead we might use:
...
on "Ready" goto ready
on "croaked" goto croaked
delay 3.5
emit "Limbo?"
exit
ready: emit "Host is ready"; exit
croaked: emit "Host bought it"; exit
There is no limit to the number of On's one might use. In practice,
when the number of On's etc. approaches 10 or 20, things do tend to slow
down a bit. Remember that each character has to be scanned for every On
separately.
Okay, suppose we wanted to do the same trick in ARexx. We run into
a problem: the program
/* croaked.rexx the wrong way */
address VLT
'on "Ready" goto ready'
'on "croaked" goto croaked'
'delay 3.5'
say "Limbo?"
exit 20
'ready: emit "Host is ready"; exit'
'croaked: emit "Host bought it"; exit'
obviously is totally bogus. The first On command is executed by VLT, and
a trap is set for the string "Ready". VLT then looks for the next command,
but *there is no next command*. For all VLT knows, it has received a
schedule with only a single command. It can't look in the ARexx macro
to see if there are any other ones, and neither does it know about labels
defined in the ARexx macro. So it exits from this schedule, and cancels
the trap for "Ready"! So the whole thing does nothing. In fact, the ARexx
script will first wait 3.5 seconds, type "Limbo?" to the shell, and then
emit "Host is ready" and "Host bought it" to the screen in rapid succession.
So obviously, "goto"s from On's are out, and with it labels.
But we can do the following:
/* croaked.rexx */
Address VLT
port = OpenPort(MYPORT)
'on "Ready" rx [address MYPORT ready]; delay 10'
'on "croaked" rx [address MYPORT croaked]; delay 10'
'schedule (delay 3.5; rx [address MYPORT timeout])'
followed by a WaitPkt on MYPORT, and checking on whether READY, CROAKED
or TIMEOUT show up. We notice, that we have added the delay 10 to the
two On commands, to make sure they survive long enough. Since this is a
little cumbersome, there is another command, called "trap" which allows
a lot of flexibility. It is described in detail in one of the Appendices.
One might rewrite the above schematically:
....
'trap add install "Ready" (rx [address MYPORT ready])'
'trap add install "croaked" (rx [address MYPORT croaked])'
'schedule (delay 3.5; rx [address MYPORT timeout])'
wait for messages
'trap remove all' /* to remove the two installed traps */
All in all, there is a lot of flexibility built into the new
trap system, there should really be no situations that are impossible
to handle (you can have traps execute any number of commands).
Instead of the "schedule" command, we might also have used
address ARexx "'call delay 175; address MYPORT timeout'"
by the way...
5. Extract and Fault
--------------------
With Extract you can either extract a single item from VLT or
all items at once. A sample of the use of Extract is given in one of
the appendices: an ARexx program that extracts everything there is to
know. Browse through the sample output, and you will find some remarkable
things: all function keys, all program options, all outstanding
schedules, etc. etc.
In particular, you can extract the line that is currently
on the screen at the vertical location of the cursor, and also the
current "search" line in the review buffer! Combine this with the
new "movecursor" command, and you can read every line on the screen
in an easy way from ARexx. Also extractable are the current x and y
location of the cursor, and you can even put the cursor back to where
it was. The stem variable that receives all the extracted values is
always called VLT.
The Fault command uses the variable called VLT.Error, but we
have already seen this command in action...
6. Command availability
-----------------------
All commands are available from ARexx. Two commands, Extract and
Fault are *only* available from ARexx.
Further, all commands that used to be only allowed during initialization
are now allowed at any time, including changing colors or screen resolution,
etc.
Moreover, at init time, the serial port is now accessible,
and any commands sending stuff to or waiting for stuff from the serial port
will work fine. Note that the restrictions on "init" files, i.e. the default
VLT.init file, or the file specified with the +i command line option, have
now been removed. What it means is that any init script is just like any
other script, with one exception: during the init script, VLT's screen
remains closed. Therefore, one can now write scripts that will never cause
VLT's screen to open, and the simple init script containing the command
"Pause" may now be used to run VLT as a server.
Since one can now run multiple scripts at the same time, using
programmed function keys or sending ARexx commands while another script is
executing is no longer a problem.
7. I forgot...
--------------
I'm sure I forgot a lot of stuff. I guess, browse through the
command list which follows and send me mail about stuff you don't
understand.
Willy.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Some conventions
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Abbreviations:
The capitalized letters (unless indicated otherwise) indicate the
minimum number of characters that needs to be specified. Usually,
commands less than 6 characters in length need to be specified
fully, whereas with longer commands a suitable abbreviation of
3 or 4 characters or as many as needed to be unambiguous is used.
Appendices:
Some commands have rather lengthy explanations. For them, we refer
to several appendices.
Timeouts: hh:mm:ss.xx
Timeouts are specified in hours, minutes, seconds and hundredths of
seconds. Units not required need not be specified, i.e., the single
digit "1" means one second, whereas "1:00" means one minute, etc.
VLT Action Strings: {<string> | ~<command>}
A VLT action string is either a string that is sent to the host
after ARP style escapes are parsed, or it is a keyscript character
followed by one or more VLT script commands.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
The script commands
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
ACTivate {Vt100 | Tektronix | Next}
Bring either the VT100 screen, or the Tektronix screen, or the
next screen in the screen list to the front. If the VT100
screen is not yet open, and Activate V or T is received, the
screen will now be opened.
ANSicolormode {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch ANSI color mode on or off. In ANSI color mode, color escape
sequences for foreground and background colors are recognized.
APPlicationcursor {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch Application Cursor mode on or off. In application cursor mode,
e.g. up arrow is transmitted as <esc> O A, otherwise as <esc> [ A.
AUToscreentoback {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch Automatic Screen-to-back mode on or off. When set, this option
causes the screen to be put behind all other screens when a protocol
transfer starts, with the status window appearing on the Workbench.
Otherwise, the status window remains on VLT's screen, and VLT's screen
remains where it is.
BAUD <baud rate>
Select a new transmission speed. Valid values are 110, 300, 1200,
2400, 4800, 9600 and 19200.
BEEP
Cause a beep. When a "Beep function" has been set, this function
is executed. Otherwise, when the volume is set to 0, the screen
will flash. If the volume is not zero, the built-in beep is
sounded.
BEEPFunction <beep function>
Set the command to be executed when the VLT bell should be sounded.
The command is a standard VLT action string. A common command is
~rx "address 'PingServer' BEEP", which causes the BEEP command to
be sent to the "PingServer". See the documentation for the 'Ping'
program.
BREAK
Send a "break" to the host.
BREAKTime <break time>
Set the time (in microseconds) that the "break" signal lasts.
The default is 75000.
BUFfersize <size>
Sets the size of the serial buffer. the default is 2048 bytes, the
lower limit is 128, the upper limit is 32767 bytes.
CANcel {ALL | <script name>}
Cancels a specified script, or all scripts except the curent one
if "all" is specified. If a script needs to be run without
interference from other scripts, a "cancel" may be placed as
the first command in a script.
Script names are determined by their first label. Therefore, it
is recommended to specify the name of the script in the form of
a label at the beginning of the script. When two scripts of the
same name are present, the first script found will be cancelled.
CAPture <file name>
Capture the session to a file with the specified file name.
CAPture RAW {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Select the capture mode. With "raw" mode on, all characters are
captured as received, including carriage returns, line feeds and
nulls. Otherwise, nulls are stripped out, and files are stored
with linefeeds as line delimiters, according to Amiga standards.
CAPture {SUSPEND | RESUME | FLUSH | OFF}
Suspend or resume capturing to the current capture file. "Flush"
causes the current buffer to be flushed to the capture file.
"Off" causes the current capture file to be closed.
CD <directory specification>
Change the current directory to the new directory specification.
CLEAR [CLOSE]
Clear the VT100 screen. If the CLOSE option is specified, the
screen or window will also be closed (See Activate).
COLOR <color number> <color value> [<pen-designation> [...]]
Set a certain color number to a particular RGB value. For example,
color 2 FFF sets color 2 to white. The three hexadecimal digits
specify R G and B respectively. Optionally, the specified color
may be assigned to any of the following 8 pens: DETail, BLOck
TEXt, SHIne, SHAdow, HIFILL, HIFILLText, BACkground. These assignments
only affect VLT when running with a custom Screen, and then only
when the screen has at four or more colors. When you make
these assignments, you must close VLT's screen and reopen it in
order to see the full effect. The Shine and Shadow assignments are
also used to determine shadowing of all gadgets VLT uses. Since
these assignments are not protected in any way, it is up to the
user to be very careful: in certain situations system gadgets and
window borders may seem to disappear if certain pen assignments are
made. In order to get the same colors and settings that are in effect
on the Workbench, run the following script:
#
# Set VLT's custom screen up for WB colors.
#
COLOR 0 AAA DETAIL BACKGROUND
COLOR 1 000 BLOCK TEXT SHADOW HIFILLTEXT
COLOR 2 FFF SHINE
COLOR 3 57A HIFILL
CLEAR CLOSE
ACTIVATE VT
To get pretty good looking shadowing on VLT's screen using VLT's
default colors, use
#
# Set VLT's custom screen up for default 8 colors.
#
COLOR 0 000 DETAIL BACKGROUND HIFILLTEXT
COLOR 1 078 BLOCK TEXT
COLOR 2 A00 HIFILL
COLOR 3 090
COLOR 4 C6A
COLOR 5 E90
COLOR 6 056 SHADOW
COLOR 7 999 SHINE
CLEAR CLOSE
ACTIVATE VT
As it turns out, these settings also work pretty well in 4 colors,
although the shine pen now effectively will be color 3, and the
shadow pen color 2. As said before, for a two-color screen these
settings have no effect.
COLUmns <number of columns>
Sets the number of columns to be displayed on the screen. If the
number is larger than the number that fits on the current screen
size, the font may be changed to a smaller size.
CONTinue
Continue a script that is currently in a "pause", "delay", or "wait"
state. Execution is resumed at the command following the one that
caused either of these states.
CONSolewindowadjust {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
When set, this option causes the number of lines displayed on the
screen to be adjusted to free up an area at the bottom of the screen
in order to display the console window, whenever that window is
opened. When not set, the console window is opened without adjusting
the display.
CURsorheight <height>
Specifies the height of the cursor. If the number is identical to
the height of the current font, the cursor height will adapt to any
font changes.
CUStomscreen {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
When set, opens VLT on its own custom screen. When not set, VLT opens
on the Workbench.
DELAY <timeout>
Causes the script to pause for the specified amount of time.
DESTructivebackspace {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
When set, the backspace key causes the previous character to be
erased while the cursor moves to that location.
DSR <number> <device status report string>
Set the primary (number = 1) or secondary (number = 2) device status
report string. The string is a standard VLT action string.
ECHO {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch "echo" on or off.
ECHOLinefeeds {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
When set, this option causes linefeeds to be echoed to the screen
as well as carriage returns, when the return key is pressed in local
echo mode.
EMIT [RAW] <character string>
Display a character string on the screen at the current cursor
position. If the "raw" option is specified, the string is not
parsed for ARP style escape sequences, otherwise it is.
EXIT [{VLT | QUiet [<next script>]}]
Exit the current script, or quit out of VLT entirely if VLT is
specified. When exiting a script, a message is displayed to indicate
that the script has terminated, unless the he quiet option is
specified. If a "next script" is specified, that script will next
be executed.
EXTRact [<field name>]
ARexx only. Extracts information from VLT in the form of the
VLT. stem variable. If no field is specified, all fields
are extracted. See Appendix A for an ARexx script that
extracts all available fields.
FAULT <error number>
ARexx only: sets the variable "VLTError" to a text representation
of the error number specified. All VLT commands set the RC variable
in an ARexx script to a code depending on whether the command was
successful or not. One may call the "Fault" command with RC as an
argument to find out what the error code meant.
FILE {SENd | RECeive | GET} <file name>
Send or receive the file with specified file name to or from the
host using the currently active transfer protocol.
Function <key number> <command>
Set function key indicated by key number to a command. Key numbers are
in the range 1 to 80, where
1 - 10 are the regular unshifted function keys;
11 - 20 are the shifted function keys;
21 - 30 are the ctrl-ed function keys;
31 - 40 are the alt-ed function keys;
41 - 50 are the menu items right-Amiga 1 through 0;
51 - 80 are the screen gadgets.
The command takes the usual form of a "VLT-action-string".
GOTO <label-name>
Go to specified label. The label name should be specified without the
trailing colon.
GRAphicslock {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch graphics lock on or off. When on, special characters from the
host will not be able to switch the mode to graphics. Otherwise,
certain control characters and escape sequences can change VLT's
mode to the graphics mode.
HANDshake {None | Xon/xoff | 7-wire} [{Xon/xoff | 7-wire}]
Specify the handshake mode for the serial port. In case both xon/xoff
and 7-wire is desired, both options may be specified.
HANGup
Cause a "hangup". This is accomplished by dropping the DTR signal
on the serial port for a period of 1 second. Notice, that most
modems can be set to ignore the DTR status, and that three-wire
cables do not usually convey this signal to the modem. If this
option does not work, you may have to send a special command
sequence to your modem, such as "+++" followed by a delay and "ATH"
in the case of Hayes compatible modems.
HELpkeylf {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
When set, the help key transmits the "line feed" character (ctrl-J)
to the host. Otherwise, the help key transmits the sequence
<esc> O l (lower case L) when in application keypad mode.
INTerlace {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch interlace on or off, for custom screens.
KERmit BYE
Send a "Bye" message to host, if Kermit protocol is currently selected.
KERmit DOWncase {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Causes file names of received files to be converted to lower case
when set.
KERmit PACKetsize <packet size>
Sets maximum packet size to be used for Kermit transfers.
KERmit MODE {Host_server | Send_receive}
Selects Kermit transfer mode between "host is server" or regular
send/receive.
KEYRepeat {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch key repeat mode on or off. When set, any key pressed and
held will send characters repeatedly. When not set, keys will never
repeat.
KEYScriptcharacter <ASCII character number>
Set the keyscript character. By default, this is the ANSI character
tilda, ~, ASCII number 126. Since many scripts assume this character
to be a tilda, it is usually unwise to change it.
LINES <number of lines>
Change the number of lines to be displayed on the screen to the
number indicated. If necessary/possible, the font will be changed
to a smaller or larger size.
LOCAL {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch VLT's local mode on or off. When in local mode, keys pressed
on the keyboard will not result in characters sent to the host.
Other means of sending characters to the host are not affected
(I.e. text entered through the console window or using script
commands etc.).
MESsage [<message>]
Post a message using VLT's message window. The '\' character may be
used to cause line feeds. When the <message> is not specified, the
current message window is closed.
MIScflags <flags>
Set various VLT options that didn't get a command all by themselves.
The only flag supported currently is bit 0: it sets the VLT review
buffer up to pad odd-length clips in compliance with the IFF spec,
but this disagrees with some editors, so the option is by default
off.
MOUsesupport {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE} [<mouse format>]
When on, the current mouse format will be used to create a VLT
action string which is subsequently executed whenever the
left mouse button is pressed on an active area of the screen. If
the mouse format is specified, that format will supersede the
old mouse format. When the mouse format is an empty string,
and mouse support is on, then a number of arrow sequences is sent
in order to position the cursor in the proper location.
The mouse format string is described elsewhere.
MOVecursor <x> <y>
Move the location of the cursor to (x, y). (1, 1) is the upper
left-hand corner. The maximum values are determined by the
displayed number of lines and columns. Notice, that this command
does not notify the host of the new cursor location.
NUMerickeypad {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch numeric keypad mode on or off. When set, the keypad transmits
the characters as displayed on the key caps. Otherwise, the keypad
transmits standard VT100 escape sequences.
ON <character string> <command>
Wait until the specified character string is received and then perform
the specified command. Only a single command may be specified. "On"
traps are in force until the context they belong to expires, or until
one is specified with the same character string. If the command
specified then is an empty string, the trap will be removed.
PARity <parity specification>
Select the parity to be used for serial port communications. Valid
values are given by a sequence of three characters: the number of
data bits (7 or 8), the parity mode (N, M, S, E or O), and the number
of stop bits (1 or 2), e.g. 7E1 or 8N1. Alternatively, the
following shortcuts may be used: none (8N1), mark (7M1), space (7S1),
even (7E1) or odd (7O1).
PAUse
Halt execution at this point in the script and wait for a "continue".
PRELoadgraphics {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
When set, causes VLT to open the graphics screen on startup. When
not set, VLT only opens the graphics screen when needed.
PREScroll <number of lines>
Sets the maximum number of lines to be prescrolled. If the currently
available data indicates that the screen needs to be scrolled a
number of times, all scrolls up to the maximum number set with this
command will be performed at once. This increases scrolling speed.
PROGrammode {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch program mode on or off.
REFresh
Refresh the text on the screen. Sometimes useful when running
on the Workbench screen.
RENdermode {Quick | Color | Normal}
Set the rendering mode. "Quick" means that all text will be rendered
in monochrome mode, but very quickly, whereas "color" means that
all text attributes will be converted to different colors, and also
ANSI color sequences are recognized to an extent. See also
"ansicolormode". In "Normal" mode, bold text will be displayed in
a different color, but all VT100 text attributes are displayed as
intended.
REView <review command> [<argument>]
Execute a review buffer command. The options are described in the
table below. All commands consist of a single character, and some
of them allow an argument. There may be white space between the
command and the argument but there doesn't have to be. The allowed
commands and arguments are shown in the table in appendix B.
REXxportname <name>
Change the name of VLT's ARexx port to the specified name. This command
can only be used if no outstanding ARexx scripts are around.
RX [SYNChronous] <ARexx command>
Submit the specified ARexx command to ARexx. If the synchronous option
is specified, the command is executed synchronously: the program will
wait until the ARexx command has completed before continuing.
SCHedule <commands>
Creates a new context and starts executing the specified commands
in that context. Multiple commands need to be separated by semicolons.
SCREENDepth <depth>
Set the depth of the screen. Values from 1 to 3 are allowed.
SCREENGadgets {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch screen gadgets on or off. When on, the standard screen displays
30 gadgets at the bottom, all of which are programmable. The display
will be adjusted to fit the set number of lines in the remaining area.
SEND [RAW] <character string>
Send a string of characters to the host. If "raw" is specified as
an option, the string is not parsed for ARP style escape sequences,
but by default it is.
SENDLinefeeds {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
When set, this option causes linefeeds to be transmitted in addition
to carriage returns, whenever the return key is pressed.
SERialdevice <device> [<unit>]
Select a different serial device to be used. Optionally, select the
unit number to be used. If the unit number is not specified, the
previous unit number is assumed.
SHIfttabesctab {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
When set, the TAB key transmits <esc> <tab> to the host when the
shift key is pressed at the same time. Some hosts interpret this
sequence as "back tab". When not set, the shifted TAB key transmits
just <tab>.
STRipbit8 {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch stripping of the high-order bit of data coming in through the
serial port on or off. This is only useful with parity settings that
have 8 data bits.
SWApbackspacedelete {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
When set, this option swaps the functions of the backspace and delete
keys. This option is useful to VAX users.
TRACE <flags> <command-delay>
When <flags> is set to a non-zero value, certain tracing options
are switched on. When <command-delay> is non-zero, a delay is
inserted after each line of trace output. The delay is in ticks,
i.e. 50 ticks is one second. The flags variable consists of a mask:
bit 0 enables tracing of every line in the script, bit 1 enables
tracing of all "traps" (i.e. On's, Wait's and Trap's). Also, little
tick marks are displayed on the screen at or near the words that
caused the trap. Bit 2 causes the output to be displayed in VLT's
Console window (if it is open) and bit 3 causes the output to be
appended to the file VLT.log in the current default directory.
The file is closed after each addition, so that in case of crash
the file most often is preserved. Example: trace 15 20 causes both
script line tracing, trap tracing, and the output is sent to both
the console (if it is open) and to the log file. there will be a
.4 second delay after each script line and each trap line. Note:
if you suspect that a particular script may cause a crash, be
warned that logging to VLT.log may be hazardous to your hard disk.
Better set your default to rad:, and use DiskSalv to recover the
file from rad: if rad: doesn't recover by itself.
TRANsfer Mode {image | text}
Select image or text mode for file transfers. In text mode, files
are assumed to be text files, and end-of-line sequences are converted.
Also, ctrl-Z's in the file may be used as an end-of-file indication.
TRANsfer Protocol {External | Kermit | Xmodem}
Select the transfer protocol: one of Kermit, XMODEM or External. In
case of external protocols, use XPR select to determine which external
protocol is to be used.
TRAP <trap-operation>
This command is discussed in detail in Appendix C.
VOLume <volume>
Sets the volume of the BEEP to be used. When zero, the screen is
flashed instead. When positive, the usual VT100 beep is sounded.
when negative, a higher-pitched shorter beep is used. This is
however superseded by any Beepfunction, see there.
WAIT <character string> [<timeout>]
Wait until the specified character string is received from the host,
or, if specified, until the timeout period has expired. If this is
the last command before returning to a REXX process, the return
code will reflect that a timeout ocurred. "Wait" traps with timeout
are equivalent to "On <character string> continue; delay <timeout>;"
except that contrary to "On" traps, the "Wait" trap is only valid
for one occurrence. The character string is parsed for ARP style
escape sequences.
WEDGE <item> <port name>
Currently only one item can be wedged: KEYStrokes.
If the specified port name exists, a REXX message will be sent to that
port of the form: KEYSTROKE <code> <qualifier> <character>
where the code and qualifier numbers are the key code and lowest
order 8 qualifier bits of the key pressed by the user. The "character"
is the translation of code and qual using the current default keymap.
If no translation is available, this field will be absent. Note, that
the special case where the space bar was pressed will look the same.
For an example of the use of this function see the appendix D.
WORkbenchcolors {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
When set, uses the Workbench colors rather than the saved custom
screen colors.
WRAP {{ON | YES | 1} | {OFF | NO | 0} | TOGGLE}
Switch wrapping of long lines on or off. When set, lines are broken
at the current maximum column number and the remainder is displayed
on the next line. When off, lines are not wrapped, and the cursor
remains at the maxmum column accesible while overwriting the last
character with all following characters according to VT100 standard.
XMOdemmode {1K | 128 | CHecksum | CRc} [{1K | 128 | CHecksum | CRc}]
Set up to two XMODEM options. Options not specified will be
carried over from the previous setting.
XPR INIT <init string>
If the current protocol is external, then the specified initialization
string is sent to the protocol. See the documentation of the protocol
for documentation.
XPR SELect <external protocol>
Select a different external protocol. Notice, that this command does
not set the current transfer protocol - see "transferprotocol".
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Appendix A: The extract command
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
The following ARexx script extracts all fields from VLT.
A sample list of output is shown below.
/**
*
* Extract all fields from VLT
*
**/
address VLT
'extract'
/*
* Loop over all the fields
*/
do i = 1 to VLT.fields
a = VLT.fields.i
/*
* Handle all fields with subfields in a special way
*/
if a = "COLOR" then do
do j = 0 to VLT.color - 1
a = VLT.fields.i"."j
say overlay(a, copies(" ", 30)) " = " VLT.a
end
end
else if a = "FIELDS" then do
say overlay(a, copies(" ", 30)) " = this list"
end
else if a = "FUNCTIONKEY" then do
do j = 1 to VLT.functionkey
a = VLT.fields.i"."j
say overlay(a, copies(" ", 30)) " = " VLT.a
end
end
else if a = "FUNCTIONKEYALT" then do
do j = 1 to VLT.functionkeyalt
a = VLT.fields.i"."j
say overlay(a, copies(" ", 30)) " = " VLT.a
end
end
else if a = "FUNCTIONKEYCTRL" then do
do j = 1 to VLT.functionkeyctrl
a = VLT.fields.i"."j
say overlay(a, copies(" ", 30)) " = " VLT.a
end
end
else if a = "FUNCTIONKEYSHIFT" then do
do j = 1 to VLT.functionkeyshift
a = VLT.fields.i"."j
say overlay(a, copies(" ", 30)) " = " VLT.a
end
end
else if a = "FUNCTIONSCREENGADGET" then do
do j = 1 to VLT.functionscreengadget
a = VLT.fields.i"."j
say overlay(a, copies(" ", 30)) " = " VLT.a
end
end
else if a = "FUNCTIONUSERMENU" then do
do j = 1 to VLT.functionusermenu
a = VLT.fields.i"."j
say overlay(a, copies(" ", 30)) " = " VLT.a
end
end
else if a = "SCHEDULESPENDING" then do
do j = 1 to VLT.schedulespending
a = VLT.fields.i"."j
say overlay(a, copies(" ", 30)) " = " VLT.a
end
end
/*
* All other fields
*/
else do
say overlay(a, copies(" ", 30)) " = " VLT.a
end
end
------------------ output: --------->
ANSICOLORMODE = 0
APPLICATIONCURSOR = 0
AUTOSCREENTOBACK = 0
BAUD = 9600
BEEPFUNCTION = ~rx "address 'PingServer' beep"
BREAKTIME = 75000
BUFFERSIZE = 2048
CAPTUREFILE =
CAPTUREMODE = 0
COLOR.0 = 0
COLOR.1 = cd
COLOR.2 = fb8
COLOR.3 = 9f9
COLOR.4 = fad
COLOR.5 = ee0
COLOR.6 = 77
COLOR.7 = fff
COLUMNS = 80
CONSOLEWINDOWADJUST = 1
CURRENTDIR =
CURRENTXPR = libs:xprascii.library
CURSORFORMAT =
CURSORHEIGHT = 0
CUSTOMSCREEN = 1
DESTRUCTIVEBACKSPACE = 0
DSR1 = *e[?62;1;2;6;7;8c
DSR2 = *E[>1;10;0c
ECHO = 0
ECHOLINEFEEDS = 0
EMULATIONMODE = 129
FIELDS = this list
FUNCTIONKEY.1 = *EOP
FUNCTIONKEY.2 = *EOQ
FUNCTIONKEY.3 = *EOR
FUNCTIONKEY.4 = *EOS
FUNCTIONKEY.5 = f5
FUNCTIONKEY.6 = f6
FUNCTIONKEY.7 = f7
FUNCTIONKEY.8 = f8
FUNCTIONKEY.9 = f9
FUNCTIONKEY.10 = ~RX "address command 'tools:WLens 150 100 VLT'"
FUNCTIONKEYALT.1 = a1
FUNCTIONKEYALT.2 = a2
FUNCTIONKEYALT.3 = a3
FUNCTIONKEYALT.4 = a4
FUNCTIONKEYALT.5 = a5
FUNCTIONKEYALT.6 = a6
FUNCTIONKEYALT.7 = a7
FUNCTIONKEYALT.8 = a8
FUNCTIONKEYALT.9 = a9
FUNCTIONKEYALT.10 = a10
FUNCTIONKEYCTRL.1 = c1
FUNCTIONKEYCTRL.2 = c2
FUNCTIONKEYCTRL.3 = c3
FUNCTIONKEYCTRL.4 = c4
FUNCTIONKEYCTRL.5 = c5
FUNCTIONKEYCTRL.6 = c6
FUNCTIONKEYCTRL.7 = c7
FUNCTIONKEYCTRL.8 = c8
FUNCTIONKEYCTRL.9 = c9
FUNCTIONKEYCTRL.10 = c10
FUNCTIONKEYSHIFT.1 = F1
FUNCTIONKEYSHIFT.2 = F2
FUNCTIONKEYSHIFT.3 = F3
FUNCTIONKEYSHIFT.4 = F4
FUNCTIONKEYSHIFT.5 = F5
FUNCTIONKEYSHIFT.6 = F6
FUNCTIONKEYSHIFT.7 = F7
FUNCTIONKEYSHIFT.8 = F8
FUNCTIONKEYSHIFT.9 = F9
FUNCTIONKEYSHIFT.10 = F10
FUNCTIONSCREENGADGET.1 = *EOP
FUNCTIONSCREENGADGET.2 = *EOQ
FUNCTIONSCREENGADGET.3 = *EOR
FUNCTIONSCREENGADGET.4 = *EOw
FUNCTIONSCREENGADGET.5 = *EOx
FUNCTIONSCREENGADGET.6 = *EOy
FUNCTIONSCREENGADGET.7 = *EOt
FUNCTIONSCREENGADGET.8 = *EOu
FUNCTIONSCREENGADGET.9 = *EOv
FUNCTIONSCREENGADGET.10 = *EOq
FUNCTIONSCREENGADGET.11 = *EOr
FUNCTIONSCREENGADGET.12 = *EOs
FUNCTIONSCREENGADGET.13 = *E!
FUNCTIONSCREENGADGET.14 = *E@
FUNCTIONSCREENGADGET.15 = *E#
FUNCTIONSCREENGADGET.16 = *E$
FUNCTIONSCREENGADGET.17 = *E%
FUNCTIONSCREENGADGET.18 = *E^
FUNCTIONSCREENGADGET.19 = *E&
FUNCTIONSCREENGADGET.20 = *E**
FUNCTIONSCREENGADGET.21 = *E(
FUNCTIONSCREENGADGET.22 = *E)
FUNCTIONSCREENGADGET.23 = *E_
FUNCTIONSCREENGADGET.24 = *E+
FUNCTIONSCREENGADGET.25 = *EOS
FUNCTIONSCREENGADGET.26 = *E*X7F
FUNCTIONSCREENGADGET.27 = *EOn
FUNCTIONSCREENGADGET.28 = *EOl
FUNCTIONSCREENGADGET.29 = *R
FUNCTIONSCREENGADGET.30 = *EOM
FUNCTIONUSERMENU.1 = ~@rexx:dialbix.scp
FUNCTIONUSERMENU.2 = ~@rexx:dialslac.scp
FUNCTIONUSERMENU.3 = ~@rexx:break.scp
FUNCTIONUSERMENU.4 = m4
FUNCTIONUSERMENU.5 = m5
FUNCTIONUSERMENU.6 = m6
FUNCTIONUSERMENU.7 = hea sk to last*R*R
FUNCTIONUSERMENU.8 = m8
FUNCTIONUSERMENU.9 = *X01$ GF4
FUNCTIONUSERMENU.10 = ~exit VLT
GRAPHICSLOCK = 0
HANDSHAKE = Xon/Xoff
HELPKEYLF = 1
INTERLACE = 1
KERMITDOWNCASE = 1
KERMITMODE = send_receive
KERMITPACKETSIZE = 1024
KEYREPEAT = 1
KEYSCRIPTCHARACTER = 126
LINES = 32
MISCFLAGS = 0
MOUSESUPPORT = 0
NUMERICKEYPAD = 1
PARITY = 8N1
PRELOADGRAPHICS = 0
PRESCROLL = 8
PROGRAMMODE = 0
RENDERMODE = normal
REVIEWBUFFERSIZE = 32000
REVIEWLINEATCURSOR =
REVIEWSEARCHLINE =
REXXPORTNAME = VLT
SCHEDULESPENDING.1 = blinker:
SCREENDEPTH = 3
SCREENGADGETS = 0
SENDLINEFEEDS = 0
SERIALDEVICE = devs:serial.device
SERIALUNIT = 0
SHIFTTABESCTAB = 1
STRIPBIT8 = 1
SWAPBACKSPACEDELETE = 0
TRANSFERMODE = image
TRANSFERPROTOCOL = kermit
TRAPSPENDING = 0
VERSION = VLT Version V4.677
VOLUME = 0
WORKBENCHCOLORS = 0
WRAP = 0
X = 1
XMODEMMODE = 1C
Y = 31
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Appendix B: The review command
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Command: | Argument: | Meaning:
---------+----------------+--------------------------------------------------
| |
A | <filename> | Save selected lines to <filename>.
B | <size> | Set buffer size to <size> bytes.
C | | Clear review buffer.
S,D,I | | Select, Deselect, Invert all lines.
S,D,I | S | " " " Search line only.
S,D,I | T | " " " from search line to top.
S.D.I | B | " " " from search line to bottom.
J | <lines> | Jump relative to search line by <lines> lines.
| | Negative numbers search towards top.
K | <line> | Jump relative to <line> from top.
| | 0 is top line. Negative numbers count from bottom:
| | -1 is bottom line.
F | <string> | Search from top Forward for <string>.
R | <string> | Search from bottom in Reverse for <string>.
G | | Repeat search Forward.
T | | Repeat search Reverse.
H | <string> | Search from last search position Forward for <string>.
Y | <string> | Search from last search position Reverse for <string>.
L | <name> | Set environemnt variable <name> to the line of
| | text at the current horizontal location of the
| | cursor. See also the "Extract" command.
M | UL UP T | Move Up Line, Up Page, to Top.
| DL DP B | " Down Line, Down Page, to Bottom.
| LC LP LM | " Left Char, Left Page, to Left Margin.
| RC RP RM | " Right Char, Right Page, to Right Margin.
O | | Open window.
P | | Scroll page (saves what is currently on screen).
Q | | Close window.
U | | Update window.
X | <name> | If previous command successful, set environment
| | variable <name> to current search line. Else
| | erase the environment variable <name>. From an
| | ARexx context, the Extract command is probably
| | preferable.
W | | Resave to current file (overwrites existing file).
Z | | Save currently selected lines to the Amiga
| | Clipboard.
To play around with these commands, switch on VLT's console window
and type such things as: ~rev "S" , ~rev "R some_string" , ~rev "M UP"
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Appendix C: The trap command
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
What follows is a syntax diagram of the "trap" command.
It is discussed in further detail below.
TRAP <trap-operation>
<trap-operation> :=
{ add [ <trap-ID>] [<options>] [<match-string>] [<actions>]
| cause <trap-ID> [<trap-ID> ...]
| activate { <trap-ID> [<trap-ID> ...] | all }
| deactivate { <trap-ID> [<trap-ID> ...] | all }
| remove { <trap-ID> [<trap-ID> ...] | all } }
<trap-ID> := 0 < integer number < 32767
<options> := [case] [wild] [defer] [autodeactivate] [install]
<match-string> := { <left-delimiter> <character-string> <right-delimiter>
| nothing }
<actions> := <left-delimiter> <VLT-command-line> <right-delimiter>
<left-delimiter> := one of: { < [ ( " '
<right-delimiter) := one of: } > ] ) " '
<VLT-command-line> := <VLT-script-command> [; <VLT-script-command> [; ...]]
Comments:
---------
- trap add:
Add a trap to the system. In case "defer" is specified the trap is
initialized as "inactive". An ID only has to be given if the trap is
to be referenced specifically by a later command (such as activate).
All traps must have both a <match-string> string and an <actions>
string although the match string may be the keyword "nothing". Such
traps can only be sprung using the "trap cause" command.
Traps are in effect for the duration of the context unless they
are specifically removed using the "trap remove" command. Traps
can be kept active beyond the duration of the context by specifying
the "install" option. Before adding the trap, ARP style escapes are
interpreted, and if the "case" option is not specified, the match
string is converted to upper case.
After the trap is added, and if the trap is active, VLT looks for
the specified match string from the host and if found it schedules
the actions specified in <actions>. If "case" was specified, the
search will be case sensitive.
- <options>:
case: Makes matching case sensitive.
wild: Allows matching with wildcards (not yet supported).
defer: The trap will be initialized as "not active"
autodeactivate: Deactivate trap after first occurrence
install: Install this trap permanently
- <actions>:
A set of VLT script commands separated with semicolons.
- trap cause:
Causes trap(s) with specified ID(s) to be sprung.
- trap activate:
Causes trap(s) with specified ID(s) to be activated.
- trap deactivate:
Causes trap(s) with specified ID(s) to be deactivated.
- trap remove:
Removes trap(s) with specified ID(s) from the trap list.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Appendix D: Example of the use of the WEDGE command
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
/**
*
* Example program to intercept keystrokes.
*
**/
/*
* Open a port
*/
mp = openport(FOOBAR)
/*
* Tell VLT to send us stuff
*/
address VLT "wedge keystrokes FOOBAR"
/*
* Loop until quitflag is 1, waiting for packets
*/
do forever
if quitflag = 1 then leave
t = waitpkt(FOOBAR)
/*
* We got a number of packets. Loop over all of them, sifting out "null"s
*/
do ff = 1
p = getpkt(FOOBAR)
if c2d(p) = 0 then leave ff
line = getarg(p)
/*
* Got a line. It is of the form: KEYSTROKE character code qualifier,
* parse it out.
*/
parse var line command code qual char .
/*
* If we got an "a", quit. If a "b", say that we'll handle this one
* ourselves by replying a 0 error return and replace it with a capital C!
* Notice that we *must* reply first!
* Otherwise return a 1.
*/
if char = 'a' then quitflag = 1
if char = 'b' then do
t = reply(p, 0)
if (char = 'b') then address VLT "send (C); emit (C);"
end
else t = reply(p, 1)
end
end